#include <bits/stdc++.h>

using namespace std;
#include <queue>
#include <vector>
using namespace std;

class Solution
{
  public:
    // 获取输入数组中最小的 k 个数
    vector<int> GetLeastNumbers_Solution(vector<int> &input, int k)
    {
        // 使用小顶堆来存储输入数组中的所有元素
        priority_queue<int, vector<int>, greater<int>> pq;
        for (int num : input)
        {
            pq.push(num);
        }
        // 从堆中取出前 k 个小元素
        vector<int> result;
        while (k-- > 0 && !pq.empty())
        {
            result.push_back(pq.top());
            pq.pop();
        }
        // 返回结果数组
        return result;
    }
};

class Solution
{
  public:
    // 获取输入数组中最小的 k 个数
    vector<int> GetLeastNumbers_Solution(vector<int> &input, int k)
    {
        // 使用最小堆来存储输入数组中的元素
        priority_queue<int, vector<int>, greater<int>> pq;
        for (int num : input)
        {
            pq.push(num);
        }
        // 结果数组，用于存储最小的 k 个数
        vector<int> res;
        while (k-- && !pq.empty())
        {
            // 将堆顶元素（当前最小元素）添加到结果数组中
            res.emplace_back(pq.top());
            // 移除堆顶元素
            pq.pop();
        }
        // 返回结果数组
        return res;
    }
};